package com.sq.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sq.system.pojo.SysMenu;
import com.sq.system.pojo.SysRole;

import java.util.List;
import java.util.Set;

/**
 *
 */
public interface SysMenuService extends IService<SysMenu> {

    /**
     * 根据用户id查询用户查看菜单
     * @param userId
     * @return
     */
    List<SysMenu> selectRoleMenuByUserId(String userId);


    /**
     * 根据用户角色查看权限菜单
     * @param sysRoles
     * @return
     */
    List<SysMenu> selectRoleMenuByUserRoles(List<SysRole> sysRoles);

    /**
     * 根据用户角色，查询权限codes
     * @param sysRoles
     * @return
     */
    Set<String> selectRolePermissions(List<SysRole> sysRoles);


    /**
     *
     * @param username
     * @return
     */
    List<SysMenu> selectRoleMenuTreeByUsername(String username);

    /**
     * 根据条件查询菜单
     * @param sysMenu
     * @return
     */
    List<SysMenu> selectAllMenu(SysMenu sysMenu);

    /**
     * 添加菜单
     * @param sysMenu
     * @return
     */
    boolean saveSysMenu(SysMenu sysMenu);

    /**
     * 修改菜单
     * @param sysMenu
     * @return
     */
    boolean updateMenuById(SysMenu sysMenu);


    boolean delMenuById(Long id);


    /**
     * 根据菜单id查询菜单
     * @param menuId
     * @return
     */
    SysMenu selectOneMenu(Long menuId);


    /**
     * 将所有的菜单整合成树
     * @return
     */
    List<SysMenu> selectAllMenuTree();

}
